1. Technical Field
The present invention relates generally to memory control and management in processing systems, and more particularly, to a reverse memory mapping scheme that permits power and failure management in a processing system running multiple virtual machines.
2. Description of the Related Art
Present-day computing systems, and in particular large-scale server systems, often include support for running multiple virtual machines. The system may be a large-scale on-demand server system that executes hundreds of server instances on a single hardware platform to support customers with varying computing requirements. In the most flexible of these systems, multiple partitions, which may differ in operating system and application mix, are concurrently present in system memory and processes executing in each partition are run in an environment that supports their execution on a guest operating system. The virtual machine provides an environment similar enough to a real hardware platform that the operating system can run with little or no modification. A hypervisor (sometimes referred to as a virtual machine monitor) manages all of the virtual machines or partitions and abstracts system resources so that each partition provides a machine-like environment to each operating system instance.
Part of the above-mentioned abstraction is provided by a memory management scheme that provides not only virtual memory management in the traditional sense, but one or more additional virtualization layers that enable the hypervisor to provide a virtualized address space for each virtual machine, referred to as its physical address space. Typically, each physical partition has a zero-based physical memory that the associated operating system instance can use as it would a hardware memory. The collection of physical address spaces is then managed by the hypervisor. To reduce the overall amount of hardware memory needed and to maximize utilization of hardware memory, the hypervisor typically uses a number of memory management techniques. For example, the hypervisor may map physical pages of different virtual machines that contain the same content to the same hardware page.
The above-incorporated patent applications disclose various mechanisms for power management that include memory consolidation and hardware and/or software mechanisms that provide decision making tools for taking a memory module off-line to conserve power. In some cases, the decision is made by an entity independent from the hypervisor or other system software, such as the power management mechanism described in the above-incorporated patent application “METHOD AND SYSTEM FOR POWER MANAGEMENT INCLUDING DEVICE CONTROLLER-BASED DEVICE USE EVALUATION AND POWER-STATE CONTROL”, where a memory module may be taken off-line (placed in a power off state) or placed in a power-saving mode having high latency such as self-refresh mode, without direct instruction by the system software. In the above-incorporated patent application “METHOD AND SYSTEM FOR POWER MANAGEMENT INCLUDING LOCAL BOUNDING OF DEVICE GROUP POWER CONSUMPTION”, a mechanism for local group control of power management states, a memory controller, or other higher level device controller such as a synchronous memory interface (SMI) may control the power management state of memory modules, to enforce local limits on power consumption.
If the hypervisor controls the decision in memory module power management as to whether a particular memory module is taken off-line or placed in a high-latency power-saving state, it must know what virtual machines are using pages within the memory module in order to intelligently prioritize the power management decisions. For example, it would be desirable for the hypervisor to take away memory from virtual machines running less important systems, rather than taking memory from more important systems.
Also, if a memory module or portion of a memory module fails, the hypervisor must also be aware of what virtual machines are using affected pages, and it would further be desirable for the hypervisor to be able to notify the guest operating system which physical page(s) have failed.
Therefore, it would be desirable to provide a mechanism for managing machine memory availability in a processing system supporting multiple virtual machines for both memory failure and power management purposes. It would further be desirable to provide a mechanism by which a hypervisor can discover memory use by one or more partitions within the processing system based on the machine address range of a module or page that has failed, or a module that is being taken off-line, or a module that is placed in a high-latency power saving state.